package cn.e3mall.item.freemarker;

import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;

import cn.e3mall.item.pojo.Item;
import cn.e3mall.pojo.TbItem;
import cn.e3mall.pojo.TbItemDesc;
import cn.e3mall.service.ItemDescService;
import cn.e3mall.service.ItemService;
import freemarker.template.Configuration;
import freemarker.template.Template;

@Component
public class CreateItemDetailTemp {
	
	@Autowired
	private FreeMarkerConfigurer freeMarkerConfigurer;
	@Autowired
	private ItemService itemService;
	@Autowired
	private ItemDescService  itemDescService;
	
	public String createItemDetailHtml(Long itemId) throws Exception {
		// 等待添加商品事物提交
		Thread.sleep(500);
		// 1、从spring容器中获得FreeMarkerConfigurer对象。
		// 2、从FreeMarkerConfigurer对象中获得Configuration对象。
		Configuration configuration = freeMarkerConfigurer.getConfiguration();
		// 3、使用Configuration对象获得Template对象。
		Template template = configuration.getTemplate("itemDetail.ftl");
		// 4、创建数据集
		Map dataModel = new HashMap<>();
		//  跟据商品id查询商品信息
		TbItem tbItem = itemService.getItemById(itemId);
		//  把TbItem转换成Item对象
		Item item = new Item(tbItem);
		//  根据商品id查询商品描述
		TbItemDesc tbItemDesc = itemDescService.getItemDescById(itemId);
		dataModel.put("item", item);
		dataModel.put("tbItemDesc", tbItemDesc);
		// 5、创建输出文件的Writer对象。
		Writer out = new FileWriter(new File("H:/freemarkerTemple/out/"+ itemId +".html"));
		// 6、调用模板对象的process方法，生成文件。
		template.process(dataModel, out);
		// 7、关闭流。
		out.close();
		return "OK";
	}

}
